home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 May / PCWorld_2008-05_cd.bin / Audio-video / audials / audialsTV-setup.exe / [0] / LaunchGadget.vbs < prev    next >
Text File  |  2008-03-13  |  6KB  |  200 lines

  1. ' VBScript source code
  2. Main 
  3.  
  4. sub Main
  5.  
  6.     dim Version 
  7.     dim AudialsWin32Path
  8.     AudialsWin32Path = """" & Wscript.Arguments.Named("p") & """"
  9.     Version = Wscript.Arguments.Named("v")
  10.  
  11.     ' Check if vista
  12.     if (Version >= 600) then
  13.         LaunchGadget()
  14.     else
  15.         ' in case of XP start The audials TV win32    
  16.         Set objApp = CreateObject("WScript.Shell") 
  17.         objApp.Run AudialsWin32Path
  18.     
  19.     end if
  20.     
  21. end sub
  22.  
  23. sub LaunchGadget()
  24.     dim Var
  25.     dim Path
  26.     dim PathGadget
  27.     dim Section
  28.     dim AllreadyInstalled
  29.     dim Result
  30.     'get system objects sidebar
  31.     Set oShell= CreateObject("WScript.Shell") 
  32.     Path=oShell.ExpandEnvironmentStrings("%LOCALAPPDATA%") & "\Microsoft\Windows Sidebar\Settings.ini"
  33.     PathGadget=oShell.ExpandEnvironmentStrings("%LOCALAPPDATA%") & "\Microsoft\Windows Sidebar\Gadgets\MusicTV.Gadget"
  34.    
  35.     ' read settings
  36.     Section = -1
  37.     AllreadyInstalled = false
  38.     i = 0
  39.     Do
  40.         
  41.         Var = "Section" & i
  42.         Result = GetINIString("Root",Var,"-1",Path)
  43.         if Result <> "-1" then
  44.             Section = i
  45.             if Result = "99" then
  46.                 AllreadyInstalled = true
  47.             end if
  48.         end if
  49.         i = i + 1
  50.     Loop While i < 10
  51.    
  52.     ' is it installed?          
  53.     if (not AllreadyInstalled) then
  54.         ' shut down the sidebar first!
  55.         oShell.Run "TaskKill /f /im sidebar.exe /t", 0, true
  56.         wscript.sleep 1000
  57.  
  58.         ' write the initial ini
  59.         WriteINIString "Root","Section" & Section+1,"99",Path
  60.         ' write the section code
  61.         WriteINIString "Section 99","PrivateSetting_GadgetName","""" & PathGadget & """",Path
  62.         WriteINIString "Section 99","PrivateSetting_Enabled","true",Path
  63.        
  64.     end if
  65.  
  66.     'start sidebar in all cases
  67.     oShell.Run "sidebar.exe", 0, false    
  68.         
  69. end sub
  70.   
  71.  
  72.  
  73.  
  74.  'Work with INI files In VBS (ASP/WSH)
  75. 'v1.00
  76. '2003 Antonin Foller, PSTRUH Software, http://www.motobit.com
  77. 'Function GetINIString(Section, KeyName, Default, FileName)
  78. 'Sub WriteINIString(Section, KeyName, Value, FileName)
  79.  
  80. Sub WriteINIString(Section, KeyName, Value, FileName)
  81.   Dim INIContents, PosSection, PosEndSection
  82.   
  83.   'Get contents of the INI file As a string
  84.   INIContents = GetFile(FileName)
  85.  
  86.   'Find section
  87.   PosSection = InStr(1, INIContents, "[" & Section & "]", vbTextCompare)
  88.   If PosSection>0 Then
  89.     'Section exists. Find end of section
  90.     PosEndSection = InStr(PosSection, INIContents, vbCrLf & "[")
  91.     '?Is this last section?
  92.     If PosEndSection = 0 Then PosEndSection = Len(INIContents)+1
  93.     
  94.     'Separate section contents
  95.     Dim OldsContents, NewsContents, Line
  96.     Dim sKeyName, Found
  97.     OldsContents = Mid(INIContents, PosSection, PosEndSection - PosSection)
  98.     OldsContents = split(OldsContents, vbCrLf)
  99.  
  100.     'Temp variable To find a Key
  101.     sKeyName = LCase(KeyName & "=")
  102.  
  103.     'Enumerate section lines
  104.     For Each Line In OldsContents
  105.       If LCase(Left(Line, Len(sKeyName))) = sKeyName Then
  106.         Line = KeyName & "=" & Value
  107.         Found = True
  108.       End If
  109.       NewsContents = NewsContents & Line & vbCrLf
  110.     Next
  111.  
  112.     If isempty(Found) Then
  113.       'key Not found - add it at the end of section
  114.       NewsContents = NewsContents & KeyName & "=" & Value
  115.     Else
  116.       'remove last vbCrLf - the vbCrLf is at PosEndSection
  117.       NewsContents = Left(NewsContents, Len(NewsContents) - 2)
  118.     End If
  119.  
  120.     'Combine pre-section, new section And post-section data.
  121.     INIContents = Left(INIContents, PosSection-1) & _
  122.       NewsContents & Mid(INIContents, PosEndSection)
  123.   else'if PosSection>0 Then
  124.     'Section Not found. Add section data at the end of file contents.
  125.     If Right(INIContents, 2) <> vbCrLf And Len(INIContents)>0 Then 
  126.       INIContents = INIContents & vbCrLf 
  127.     End If
  128.     INIContents = INIContents & "[" & Section & "]" & vbCrLf & _
  129.       KeyName & "=" & Value
  130.   end if'if PosSection>0 Then
  131.   WriteFile FileName, INIContents
  132. End Sub
  133.  
  134. Function GetINIString(Section, KeyName, Default, FileName)
  135.   Dim INIContents, PosSection, PosEndSection, sContents, Value, Found
  136.   
  137.   'Get contents of the INI file As a string
  138.   INIContents = GetFile(FileName)
  139.   'Find section
  140.   PosSection = InStr(1, INIContents, "[" & Section & "]", vbTextCompare)
  141.   If PosSection>0 Then
  142.  
  143.     'Section exists. Find end of section
  144.     PosEndSection = InStr(PosSection, INIContents, vbCrLf & "[")
  145.     '?Is this last section?
  146.     If PosEndSection = 0 Then PosEndSection = Len(INIContents)+1
  147.     
  148.     'Separate section contents
  149.     sContents = Mid(INIContents, PosSection, PosEndSection - PosSection)
  150.  
  151.     If InStr(1, sContents, vbCrLf & KeyName & "=", vbTextCompare)>0 Then
  152.       Found = True
  153.       'Separate value of a key.
  154.       Value = SeparateField(sContents, vbCrLf & KeyName & "=", vbCrLf)
  155.     End If
  156.   End If
  157.   If isempty(Found) Then Value = Default
  158.   GetINIString = Value
  159. End Function
  160.  
  161. 'Separates one field between sStart And sEnd
  162. Function SeparateField(ByVal sFrom, ByVal sStart, ByVal sEnd)
  163.   Dim PosB: PosB = InStr(1, sFrom, sStart, 1)
  164.   If PosB > 0 Then
  165.     PosB = PosB + Len(sStart)
  166.     Dim PosE: PosE = InStr(PosB, sFrom, sEnd, 1)
  167.     If PosE = 0 Then PosE = InStr(PosB, sFrom, vbCrLf, 1)
  168.     If PosE = 0 Then PosE = Len(sFrom) + 1
  169.     SeparateField = Mid(sFrom, PosB, PosE - PosB)
  170.   End If
  171. End Function
  172.  
  173.  
  174. 'File functions
  175. Function GetFile(ByVal FileName)
  176.   Dim FS: Set FS = CreateObject("Scripting.FileSystemObject")
  177.   'Go To windows folder If full path Not specified.
  178.   If InStr(FileName, ":\") = 0 And Left (FileName,2)<>"\\" Then 
  179.     FileName = FS.GetSpecialFolder(0) & "\" & FileName
  180.   End If
  181.   On Error Resume Next
  182.  
  183.   GetFile = FS.OpenTextFile(FileName,1,false,-1).ReadAll
  184. End Function
  185.  
  186. Function WriteFile(ByVal FileName, ByVal Contents)
  187.   
  188.   Dim FS: Set FS = CreateObject("Scripting.FileSystemObject")
  189.   'On Error Resume Next
  190.  
  191.   'Go To windows folder If full path Not specified.
  192.   If InStr(FileName, ":\") = 0 And Left (FileName,2)<>"\\" Then 
  193.     FileName = FS.GetSpecialFolder(0) & "\" & FileName
  194.   End If
  195.  
  196.     
  197.   Dim OutStream: Set OutStream = FS.OpenTextFile(FileName, 2, True,-1)
  198.   OutStream.Write Contents
  199. End Function
  200.